//
//  main.m
//  OC6_字典&集合
//
//  Created by dllo on 15/10/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

//    // 不可变字典
//    // 创建&初始化
//    // dictionaryWithObjectsAndKeys:value1, key1, value2, key2......, nil
//    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"王宁", @"name", @"男", @"sex", @"瑜伽", @"hobby", nil];
//    
//    // 通过key访问value
//    NSLog(@"%@", [dic objectForKey:@"name"]);
//    
//    // 遍历字典
//    for (NSInteger i = 0; i < dic.allKeys.count; i++) {
//        
//        // 先通过下标获取key
//        NSString *key = [dic.allKeys objectAtIndex:i];
//        // 再通过key获取value
//        NSLog(@"%@", [dic objectForKey:key]);
//    }
    
    
//    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"葛河俊", @"name", @"男", @"sex", @"瑜伽", @"hobby", nil];
//    for (NSInteger i = 0 ; i < dic.allKeys.count; i++) {
////        NSString *key = [[dic allKeys] objectAtIndex:i];
////        NSLog(@"%@", [dic objectForKey:key]);
//        NSLog(@"%@", [dic objectForKey:[[dic allKeys] objectAtIndex:i]]);
//    }
//    
//    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"孙云璞", @"name", @"男", @"sex", @"唱歌", @"hobby", nil];
//    for (NSInteger i = 0; i < dic1.allKeys.count; i++) {
//        NSString *str = [dic1.allKeys objectAtIndex:i];
//        NSLog(@"%@", [dic1 objectForKey:str]);
//    }
    
    

    
//    // 可变字典
//    
//    // 创建&初始化
//    NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"王宁", @"name", @"男", @"sex", @"瑜伽", @"hobby", nil];
//    
//    NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
//    
//    // 添加/修改
//    // 若key值存在则修改,不存在则添加
//    [dic setObject:@"王宁宁" forKey:@"name"];
//    
//    // 删除
//    [dic removeObjectForKey:@"sex"];
    
    
    
    
    // 集合
    // 不可变集合
    // 注意, 1, 集合注重的操作方式是判断是否包含,判断交集并集等;
//           2, 集合中的元素具有唯一性, 若重复保留一个
//    NSSet *set = [NSSet setWithObjects:@"1", @"2", @"3", @"2", nil];
//    
//    
//    // 个数
//    NSLog(@"%ld", set.count);
//    
//    // 获取任意一个元素
//    NSLog(@"%@", [set anyObject]);
//    
//    // 判断是否包含某个元素
//    NSLog(@"%d", [set containsObject:@"2"]);
    
    
//    // 可变集合
//    NSMutableSet *set1 = [NSMutableSet setWithObjects:@"1", @"2", @"3", nil];
//    
//    NSMutableSet *set2 = [NSMutableSet setWithObjects:@"2", @"3", @"4", @"5", nil];
////
//   // 合并
//    [set1 unionSet:set2];
//    for (NSInteger i = 0; i < [set1 allObjects].count; i++) {
//        NSLog(@"%@",[[set1 allObjects] objectAtIndex:i]);
//    }
//
//    // 交集
//    [set1 intersectSet:set2];
//    for (NSInteger i = 0; i < [set1 allObjects].count; i++) {
//        NSLog(@"%@",[[set1 allObjects] objectAtIndex:i]);
//    }
//
//    // 添加
//    [set1 addObject:@"9"];
//    
//    // 删除
//    [set1 removeObject:@"9"];
//    
//    
//    
//    // 可判断重复元素个数的集合
//    NSCountedSet *set = [NSCountedSet setWithObjects:@"1", @"2", @"3", nil];
//    
//    // 元素个数
//    NSLog(@"%ld", set.count);
//    
//    // 重复的元素个数
//    NSLog(@"%ld", [set countForObject:@"2"]);
    
    
    
    // 快速枚举
//
    // 数组的快速枚举
//    NSArray *arr = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
//
//    // 遍历打印
////    for (NSInteger i = 0; i < arr.count; i++) {
////        NSLog(@"%@", [arr objectAtIndex:i]);
////    }
//    
//    for (NSString *str/*(得到的是什么类型)*/ in arr/*(要遍历的是什么)*/) {
//        NSLog(@"%@", str);
//    }
    
//    // 字典的快速枚举
//    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"王宁", @"name", @"男", @"sex", @"瑜伽", @"hobby", nil];
//    
//    // 注意, 遍历字典得到的是key
//    for (NSString *key in dic) {
//        NSLog(@"%@", [dic objectForKey:key]);
//    }
    
    // 集合的快速枚举
//    NSSet *set = [NSSet setWithObjects:@"1", @"2", @"3", @"2", nil];
//    
//    for (NSString *str in set) {
//        NSLog(@"%@", str);
//    }
    
    
    
    // 注意!!! 快速枚举 - 不要再forin中改变被遍历的collection
    
    
    // 数组排序
    // 可变数组排序方法
//    NSMutableArray  *arrM1 = [NSMutableArray arrayWithObjects:@"2", @"4", @"7", @"9", @"5", nil];
//    
//    [arrM1 sortUsingSelector:@selector(compare:)];
    
    
    // 原始冒泡排序
//    for (NSInteger i = 0; i < arrM1.count - 1; i++) {
//        for (NSInteger j = 0; j < arrM1.count - i - 1; j++) {
//            if ([[arrM1 objectAtIndex:j] compare:[arrM1 objectAtIndex:j + 1]] > 0) {
//                [arrM1 exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
//            }
//        }
//    }
    
    
    // 不可变数组排序方法
//    NSArray *arr = [NSArray arrayWithObjects:@"8", @"7", @"4", @"9", nil];
//    
//    NSArray *sortArr = [arr sortedArrayUsingSelector:@selector(compare:)];
//
//    for (NSString *str in sortArr) {
//        NSLog(@"%@",str);
//    }
    
    
//    NSString *filePath = @"/Users/dllo/Desktop/DLS151034/OC6_字典&集合/OC6_字典&集合/File";
//    NSString *str = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
//    
////    NSLog(@"%@", str);
//    
//    NSArray *arr = [str componentsSeparatedByString:@"\n"];
//    
//    NSLog(@"%@", arr);
    
    
    
    
    
    
    
    return 0;
}
